/**
 * Description:
 * Class Name:IntStreamTest
 * Date:2022/2/26 11:59
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第8章_Java集合._8_2_Java11增强的Collection和Iterator接口._8_2_6_使用Stream操作集合;

import java.util.stream.IntStream;

public class IntStreamTest {
    public static void main(String[] args) {
        var is = IntStream.builder()
                .add(20)
                .add(13)
                .add(-2)
                .add(18)
                .build();
        // 下面调用聚集方法的代码每次只能执行一行
        int choices = Integer.parseInt(args[0]);

        switch (choices){
            case 1 -> {
                System.out.println("is所有元素的最大值：" + is.max().getAsInt());
            }
            case 2 -> {
                System.out.println("is所有元素的最小值：" + is.min().getAsInt());
            }
            case 3 -> {
                System.out.println("is所有元素的总和：" + is.sum());
            }
            case 4 -> {
                System.out.println("is所有元素的总数：" + is.count());
            }
            case 5 -> System.out.println("is所有元素的平均值：" + is.average());
            case 6 -> System.out.println("is所有元素的平方是否都大于20：" + is.allMatch(value -> value * value > 20));
            case 7 -> System.out.println("is是否包含有元素的平方大于20：" + is.anyMatch(value -> value * value > 20));
            case 8 -> {
                var newIs = is.map(ele -> {return ele *=2 + 1;});
                newIs.forEach(System.out::println);
            }
        }
//        System.out.println("is所有元素的最大值：" + is.max().getAsInt());
//        System.out.println("is所有元素的最小值：" + is.min().getAsInt());
//        System.out.println("is所有元素的总和：" + is.sum());
//        System.out.println("is所有元素的总数：" + is.count());
//        System.out.println("is所有元素的平均值：" + is.average());
//        System.out.println("is所有元素的平方是否都大于20：" + is.allMatch(value -> value * value > 20));
//        System.out.println("is是否包含有元素的平方大于20：" + is.anyMatch(value -> value * value > 20));

        // 将is映射成一个新Stream，新Stream的每个元素是原Stream元素的2倍再加1
//        var newIs = is.map(ele-> ele * 2 + 1);
//        var newIs = is.map(ele -> {return ele *=2 + 1;});
        // 使用方法引用的方式来遍历集合元素
//        newIs.forEach(System.out::println);
    }
}
